If the image differs, but the number of pixels that differ is no more
than tolerated-diff-pixels and the differences are no more than
tolerated-diff-level, then we treat it as a success with warnings, save
the .diff.png for analysis, and use g_test_incomplete() to record the
test-case as "TODO".
Signed-off-by: Simon McVittie <smcv@debian.org>
Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3195
Applied-upstream: no, upstream want reftests to be a strict pass/fail with identical results required
Gbp-Pq: Name reftests-Allow-minor-differences-to-be-tolerated.patch
Simon McVittie [Sat, 13 Feb 2021 18:26:24 +0000 (18:26 +0000)]
reftest_compare_surfaces: Report how much the images differ
In unattended/non-interactive/autobuilder environments where the images
are not trivially accessible, this provides a way to distinguish between
totally different rendering and more subtle issues.
Signed-off-by: Simon McVittie <smcv@debian.org>
Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3195
Applied-upstream: no, upstream want reftests to be a strict pass/fail with identical results required
Gbp-Pq: Name reftest_compare_surfaces-Report-how-much-the-images-diffe.patch
While meson.build indicates that 2.66 is enough, one of the tests
introduced API that is only available to 2.68 which leads to package
build failure:
../../../testsuite/reftests/gtk-reftest.c: In function ‘log_writer’:
../../../testsuite/reftests/gtk-reftest.c:537:7: warning: implicit declaration of function ‘g_log_writer_default_would_drop’; did you mean ‘g_log_writer_default’? [-Wimplicit-function-declaration]
537 | if (!g_log_writer_default_would_drop (log_level, NULL))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| g_log_writer_default
../../../testsuite/reftests/gtk-reftest.c:537:7: warning: nested extern declaration of ‘g_log_writer_default_would_drop’ [-Wnested-externs]
Matthias Clasen [Thu, 2 Jun 2022 10:38:12 +0000 (06:38 -0400)]
Add more directories to the builtin hicolor index
We haven't had any scalable directories in this list.
Add some. Since we seem to have settled on including
just actions and status as subdirectories for each
size, add scalable/actions and scalable/status.
Benjamin Otte [Mon, 16 May 2022 20:26:09 +0000 (22:26 +0200)]
testsuite: Add tests for label overdraw
This brings back a subset of what quit-mnemonic.ui tested for, but
trying a lot harder to trigger the label overdrawing its allocation,
which will cause the text to be cut off when clipping is happening.
It should not be an issue at all with GTK4, but keeping that test around
is a good idea.
Matthias Clasen [Sat, 14 May 2022 16:52:40 +0000 (12:52 -0400)]
Drop the quit-mnemonic reftest
I can't quite figure out what this test was meant
to test, and how to make it do so in a way that
does not fall afoul of rendering issues in the GL
renderer and rounding differences in pango.
Matthias Clasen [Fri, 27 May 2022 14:10:27 +0000 (10:10 -0400)]
wayland: scale cursors to the right size
When loading cursors at scale, we expect the
cursor images to have a size of scale * size.
If we don't find such images, load them at their
unscaled size and scale them up ourselves.
Without this, cursors will appear in unexpected
sizes depending on scales and themes.
Sebastian Keller [Wed, 25 May 2022 12:56:05 +0000 (14:56 +0200)]
a11y: Realize GtkStackPage parent context before trying to get a ref
If a context is not realized, calling gtk_at_spi_context_to_ref() will
return a null ref, because its path has not been initialized yet. This
was already done for all other cases in get_parent_context_ref(), but
was missing for the GtkStackPage case.
Matthias Clasen [Fri, 27 May 2022 02:28:57 +0000 (22:28 -0400)]
wayland: Sanity check cursor image size
On Wayland it is a protocol violation to upload buffers with
dimensions that are not an integer multiple of the buffer scale.
Until recently, Mutter did not enforce this. When it started
doing so, some users started seeing crashes in GTK apps because the
cursor theme ended up with e.g. a 15x16 pixel image at scale of 2.
Benjamin Otte [Thu, 26 May 2022 02:36:14 +0000 (04:36 +0200)]
x11: Always update shadow size
Not updating shadow size unconditionally would lead to shadow size not
being set on map, which would lead mutter to think that we are a Window
without extents and then become confused when we suddenly set some.
Make sure that doesn't happen by always having shadows set on map, just
like GTK3.
actionmuxer: check for observer before unregistering
This can happen if the group can be resolved even when doing the initial
registration of an action as observer will not yet be in the GSList of
watchers (and therefore has no weak references).
Previously, there was an issue with glitching after showing/hiding a
popover that was not also destroyed. This was due to the popover having
an update_freeze_count of zero after hiding the surface.
That resulted in it's toplevel continuously dropping frames such as during
high-frame-rate scrolling in textviews. This problem is much more visible
on high-frame-rate displays such as 120hz/144hz.
With this commit, we freeze the frame clock of the popup until it is
mapped again.